import pandas as pd

df_train = pd.read_csv("../datas/titanic/titanic_train.csv")
df_train.drop(columns=["Name", "Ticket", "Cabin"], inplace=True)
# 使用年龄的平均值，填充空值
# 2、分类有序特征可以用数字的方法处理¶
df_train["Age"] = df_train["Age"].fillna(df_train["Age"].mean())
# 3、普通无序分类特征可以用get_dummies编码¶
# series
pd.get_dummies(df_train["Sex"]).head()
# 便捷方法，用df全部替换
needcode_cat_columns = ["Pclass","Sex","SibSp","Parch","Embarked"]
df_coded = pd.get_dummies(
    df_train,
    # 要转码的列
    columns=needcode_cat_columns,
    # 生成的列名的前缀
    prefix=needcode_cat_columns,
    # 把空值也做编码
    dummy_na=True,
    # 把1 of k移除（dummy variable trap）
    drop_first=True
)
print(df_train.head())
# 4、机器学习模型训练
y = df_coded.pop("Survived")
y.head()

X = df_coded
X.head()

from sklearn.linear_model import LogisticRegression
# 创建模型对象
logreg = LogisticRegression(solver='liblinear')

# 实现模型训练
logreg.fit(X, y)
